package com.chenchen.tiguan.venue.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.chenchen.tiguan.common.annotation.Excel;
import com.chenchen.tiguan.common.core.domain.BaseEntity;

/**
 * 场馆闭馆规则对象 venue_closing_slot
 * 
 * @author chenchen
 * @date 2025-04-14
 */
public class VenueClosingSlot extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 闭馆记录唯一标识 */
    private Long closingId;

    /** 关联场馆ID（需应用层校验） */
    @Excel(name = "关联场馆ID", readConverterExp = "需=应用层校验")
    private Long venueId;

    /** 类型（1=每周固定闭馆，2=指定日期全天闭馆，3=指定日期时间段闭馆） */
    @Excel(name = "类型", readConverterExp = "1==每周固定闭馆，2=指定日期全天闭馆，3=指定日期时间段闭馆")
    private Long type;

    /** 仅type=1时有效，星期几（0=周日，1=周一，...6=周六） */
    @Excel(name = "仅type=1时有效，星期几", readConverterExp = "0==周日，1=周一，...6=周六")
    private Long dayOfWeek;

    /** 仅type=2或3时有效，具体闭馆日期（如2023-10-01） */
    @Excel(name = "仅type=2或3时有效，具体闭馆日期", readConverterExp = "如=2023-10-01")
    private Date closingDate;

    /** 闭馆开始时间（type=3时必填） */
    @Excel(name = "闭馆开始时间", readConverterExp = "t=ype=3时必填")
    @JsonFormat(pattern = "HH:mm")
    private Date startTime;

    /** 闭馆结束时间（type=3时必填） */
    @Excel(name = "闭馆结束时间", readConverterExp = "t=ype=3时必填")
    @JsonFormat(pattern = "HH:mm")
    private Date endTime;

    /** 闭馆原因（如“设备维护”） */
    @Excel(name = "闭馆原因", readConverterExp = "如=“设备维护”")
    private String reason;

    private Venue venue;

    public Venue getVenue() {
        return venue;
    }

    public void setVenue(Venue venue) {
        this.venue = venue;
    }

    public void setClosingId(Long closingId)
    {
        this.closingId = closingId;
    }

    public Long getClosingId() 
    {
        return closingId;
    }
    public void setVenueId(Long venueId) 
    {
        this.venueId = venueId;
    }

    public Long getVenueId() 
    {
        return venueId;
    }
    public void setType(Long type) 
    {
        this.type = type;
    }

    public Long getType() 
    {
        return type;
    }
    public void setDayOfWeek(Long dayOfWeek) 
    {
        this.dayOfWeek = dayOfWeek;
    }

    public Long getDayOfWeek() 
    {
        return dayOfWeek;
    }
    public void setClosingDate(Date closingDate) 
    {
        this.closingDate = closingDate;
    }

    public Date getClosingDate() 
    {
        return closingDate;
    }
    public void setStartTime(Date startTime) 
    {
        this.startTime = startTime;
    }

    public Date getStartTime() 
    {
        return startTime;
    }
    public void setEndTime(Date endTime) 
    {
        this.endTime = endTime;
    }

    public Date getEndTime() 
    {
        return endTime;
    }
    public void setReason(String reason) 
    {
        this.reason = reason;
    }

    public String getReason() 
    {
        return reason;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("closingId", getClosingId())
            .append("venueId", getVenueId())
            .append("type", getType())
            .append("dayOfWeek", getDayOfWeek())
            .append("closingDate", getClosingDate())
            .append("startTime", getStartTime())
            .append("endTime", getEndTime())
            .append("reason", getReason())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("venue",getVenue())
            .toString();
    }
}
